/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package gsoc.ogsadai.model;

import javax.xml.datatype.XMLGregorianCalendar;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Data Type</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link gsoc.ogsadai.model.DataType#getString <em>String</em>}</li>
 *   <li>{@link gsoc.ogsadai.model.DataType#getCharArray <em>Char Array</em>}</li>
 *   <li>{@link gsoc.ogsadai.model.DataType#getBinary <em>Binary</em>}</li>
 *   <li>{@link gsoc.ogsadai.model.DataType#getFloat <em>Float</em>}</li>
 *   <li>{@link gsoc.ogsadai.model.DataType#getDouble <em>Double</em>}</li>
 *   <li>{@link gsoc.ogsadai.model.DataType#getInt <em>Int</em>}</li>
 *   <li>{@link gsoc.ogsadai.model.DataType#getLong <em>Long</em>}</li>
 *   <li>{@link gsoc.ogsadai.model.DataType#isBoolean <em>Boolean</em>}</li>
 *   <li>{@link gsoc.ogsadai.model.DataType#getDate <em>Date</em>}</li>
 *   <li>{@link gsoc.ogsadai.model.DataType#getListBegin <em>List Begin</em>}</li>
 *   <li>{@link gsoc.ogsadai.model.DataType#getListEnd <em>List End</em>}</li>
 * </ul>
 * </p>
 *
 * @see gsoc.ogsadai.model.ModelPackage#getDataType()
 * @model extendedMetaData="name='DataType' kind='elementOnly'"
 * @generated
 */
public interface DataType extends EObject {
	/**
	 * Returns the value of the '<em><b>String</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>String</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>String</em>' attribute.
	 * @see #setString(String)
	 * @see gsoc.ogsadai.model.ModelPackage#getDataType_String()
	 * @model dataType="gsoc.ogsadai.model.String_2"
	 * 		  annotation="EAnnotation0 exclusion='charArray binary float double int long boolean dateTime'"	
	 *        extendedMetaData="kind='element' name='string' namespace='##targetNamespace'"
	 * @generated not
	 */
	String getString();

	/**
	 * Sets the value of the '{@link gsoc.ogsadai.model.DataType#getString <em>String</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>String</em>' attribute.
	 * @see #getString()
	 * @generated
	 */
	void setString(String value);

	/**
	 * Returns the value of the '<em><b>Char Array</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Char Array</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Char Array</em>' attribute.
	 * @see #setCharArray(String)
	 * @see gsoc.ogsadai.model.ModelPackage#getDataType_CharArray()
	 * @model dataType="gsoc.ogsadai.model.String_3"
	 *        annotation="EAnnotation0 exclusion='string binary float double int long boolean dateTime'"
	 *        extendedMetaData="kind='element' name='charArray' namespace='##targetNamespace'"
	 * @generated not
	 */
	String getCharArray();

	/**
	 * Sets the value of the '{@link gsoc.ogsadai.model.DataType#getCharArray <em>Char Array</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Char Array</em>' attribute.
	 * @see #getCharArray()
	 * @generated
	 */
	void setCharArray(String value);

	/**
	 * Returns the value of the '<em><b>Binary</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Binary</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Binary</em>' attribute.
	 * @see #setBinary(byte[])
	 * @see gsoc.ogsadai.model.ModelPackage#getDataType_Binary()
	 * @model dataType="gsoc.ogsadai.model.Base64Binary"
	 * 		  extendedMetaData="kind='element' name='binary' namespace='##targetNamespace'"
	 *        extendedMetaData="kind='element' name='binary' namespace='##targetNamespace'"
	 * @generated not
	 */
	byte[] getBinary();

	/**
	 * Sets the value of the '{@link gsoc.ogsadai.model.DataType#getBinary <em>Binary</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Binary</em>' attribute.
	 * @see #getBinary()
	 * @generated
	 */
	void setBinary(byte[] value);

	/**
	 * Returns the value of the '<em><b>Float</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Float</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Float</em>' attribute.
	 * @see #isSetFloat()
	 * @see #unsetFloat()
	 * @see #setFloat(float)
	 * @see gsoc.ogsadai.model.ModelPackage#getDataType_Float()
	 * @model unsettable="true" dataType="gsoc.ogsadai.model.Float"
	 * 		  annotation="EAnnotation0 exclusion='string charArray binary double int long boolean dateTime'"
	 *        extendedMetaData="kind='element' name='float' namespace='##targetNamespace'"
	 * @generated not
	 */
	float getFloat();

	/**
	 * Sets the value of the '{@link gsoc.ogsadai.model.DataType#getFloat <em>Float</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Float</em>' attribute.
	 * @see #isSetFloat()
	 * @see #unsetFloat()
	 * @see #getFloat()
	 * @generated
	 */
	void setFloat(float value);

	/**
	 * Unsets the value of the '{@link gsoc.ogsadai.model.DataType#getFloat <em>Float</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetFloat()
	 * @see #getFloat()
	 * @see #setFloat(float)
	 * @generated
	 */
	void unsetFloat();

	/**
	 * Returns whether the value of the '{@link gsoc.ogsadai.model.DataType#getFloat <em>Float</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Float</em>' attribute is set.
	 * @see #unsetFloat()
	 * @see #getFloat()
	 * @see #setFloat(float)
	 * @generated
	 */
	boolean isSetFloat();

	/**
	 * Returns the value of the '<em><b>Double</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Double</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Double</em>' attribute.
	 * @see #isSetDouble()
	 * @see #unsetDouble()
	 * @see #setDouble(double)
	 * @see gsoc.ogsadai.model.ModelPackage#getDataType_Double()
	 * @model unsettable="true" dataType="gsoc.ogsadai.model.Double"
	 * 		  annotation="EAnnotation0 exclusion='string charArray binary float int long boolean dateTime'"
	 *        extendedMetaData="kind='element' name='double' namespace='##targetNamespace'"
	 * @generated not
	 */
	double getDouble();

	/**
	 * Sets the value of the '{@link gsoc.ogsadai.model.DataType#getDouble <em>Double</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Double</em>' attribute.
	 * @see #isSetDouble()
	 * @see #unsetDouble()
	 * @see #getDouble()
	 * @generated
	 */
	void setDouble(double value);

	/**
	 * Unsets the value of the '{@link gsoc.ogsadai.model.DataType#getDouble <em>Double</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetDouble()
	 * @see #getDouble()
	 * @see #setDouble(double)
	 * @generated
	 */
	void unsetDouble();

	/**
	 * Returns whether the value of the '{@link gsoc.ogsadai.model.DataType#getDouble <em>Double</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Double</em>' attribute is set.
	 * @see #unsetDouble()
	 * @see #getDouble()
	 * @see #setDouble(double)
	 * @generated
	 */
	boolean isSetDouble();

	/**
	 * Returns the value of the '<em><b>Int</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Int</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Int</em>' attribute.
	 * @see #isSetInt()
	 * @see #unsetInt()
	 * @see #setInt(int)
	 * @see gsoc.ogsadai.model.ModelPackage#getDataType_Int()
	 * @model unsettable="true" dataType="gsoc.ogsadai.model.Int"
	 * 		  annotation="EAnnotation0 exclusion='string charArray binary float double  long boolean dateTime'"
	 *        extendedMetaData="kind='element' name='int' namespace='##targetNamespace'"
	 * @generated not
	 */
	int getInt();

	/**
	 * Sets the value of the '{@link gsoc.ogsadai.model.DataType#getInt <em>Int</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Int</em>' attribute.
	 * @see #isSetInt()
	 * @see #unsetInt()
	 * @see #getInt()
	 * @generated
	 */
	void setInt(int value);

	/**
	 * Unsets the value of the '{@link gsoc.ogsadai.model.DataType#getInt <em>Int</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetInt()
	 * @see #getInt()
	 * @see #setInt(int)
	 * @generated
	 */
	void unsetInt();

	/**
	 * Returns whether the value of the '{@link gsoc.ogsadai.model.DataType#getInt <em>Int</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Int</em>' attribute is set.
	 * @see #unsetInt()
	 * @see #getInt()
	 * @see #setInt(int)
	 * @generated
	 */
	boolean isSetInt();

	/**
	 * Returns the value of the '<em><b>Long</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Long</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Long</em>' attribute.
	 * @see #isSetLong()
	 * @see #unsetLong()
	 * @see #setLong(long)
	 * @see gsoc.ogsadai.model.ModelPackage#getDataType_Long()
	 * @model unsettable="true" dataType="gsoc.ogsadai.model.Long"
	 * 		  annotation="EAnnotation0 exclusion='string charArray binary float double int boolean dateTime'"
	 *        extendedMetaData="kind='element' name='long' namespace='##targetNamespace'"
	 * @generated not
	 */
	long getLong();

	/**
	 * Sets the value of the '{@link gsoc.ogsadai.model.DataType#getLong <em>Long</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Long</em>' attribute.
	 * @see #isSetLong()
	 * @see #unsetLong()
	 * @see #getLong()
	 * @generated
	 */
	void setLong(long value);

	/**
	 * Unsets the value of the '{@link gsoc.ogsadai.model.DataType#getLong <em>Long</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetLong()
	 * @see #getLong()
	 * @see #setLong(long)
	 * @generated
	 */
	void unsetLong();

	/**
	 * Returns whether the value of the '{@link gsoc.ogsadai.model.DataType#getLong <em>Long</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Long</em>' attribute is set.
	 * @see #unsetLong()
	 * @see #getLong()
	 * @see #setLong(long)
	 * @generated
	 */
	boolean isSetLong();

	/**
	 * Returns the value of the '<em><b>Boolean</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Boolean</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Boolean</em>' attribute.
	 * @see #isSetBoolean()
	 * @see #unsetBoolean()
	 * @see #setBoolean(boolean)
	 * @see gsoc.ogsadai.model.ModelPackage#getDataType_Boolean()
	 * @model unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
	 *        extendedMetaData="kind='element' name='boolean' namespace='##targetNamespace'"
	 * @generated
	 */
	boolean isBoolean();

	/**
	 * Sets the value of the '{@link gsoc.ogsadai.model.DataType#isBoolean <em>Boolean</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Boolean</em>' attribute.
	 * @see #isSetBoolean()
	 * @see #unsetBoolean()
	 * @see #isBoolean()
	 * @generated not
	 */
	void setBoolean(boolean value);

	/**
	 * Unsets the value of the '{@link gsoc.ogsadai.model.DataType#isBoolean <em>Boolean</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetBoolean()
	 * @see #isBoolean()
	 * @see #setBoolean(boolean)
	 * @generated
	 */
	void unsetBoolean();

	/**
	 * Returns whether the value of the '{@link gsoc.ogsadai.model.DataType#isBoolean <em>Boolean</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Boolean</em>' attribute is set.
	 * @see #unsetBoolean()
	 * @see #isBoolean()
	 * @see #setBoolean(boolean)
	 * @generated
	 */
	boolean isSetBoolean();

	/**
	 * Returns the value of the '<em><b>Date</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Date</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Date</em>' attribute.
	 * @see #setDate(XMLGregorianCalendar)
	 * @see gsoc.ogsadai.model.ModelPackage#getDataType_Date()
	 * @model dataType="gsoc.ogsadai.model.DateTime"
	 * 		  annotation="EAnnotation0 exclusion='string charArray binary float double int boolean'"
	 *        extendedMetaData="kind='element' name='date' namespace='##targetNamespace'"
	 * @generated not
	 */
	XMLGregorianCalendar getDate();

	/**
	 * Sets the value of the '{@link gsoc.ogsadai.model.DataType#getDate <em>Date</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Date</em>' attribute.
	 * @see #getDate()
	 * @generated
	 */
	void setDate(XMLGregorianCalendar value);

	/**
	 * Returns the value of the '<em><b>List Begin</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>List Begin</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>List Begin</em>' containment reference.
	 * @see #setListBegin(ListBeginType)
	 * @see gsoc.ogsadai.model.ModelPackage#getDataType_ListBegin()
	 * @model containment="true"
	 *        extendedMetaData="kind='element' name='listBegin' namespace='##targetNamespace'"
	 * @generated
	 */
	ListBeginType getListBegin();

	/**
	 * Sets the value of the '{@link gsoc.ogsadai.model.DataType#getListBegin <em>List Begin</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>List Begin</em>' containment reference.
	 * @see #getListBegin()
	 * @generated
	 */
	void setListBegin(ListBeginType value);

	/**
	 * Returns the value of the '<em><b>List End</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>List End</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>List End</em>' containment reference.
	 * @see #setListEnd(ListEndType)
	 * @see gsoc.ogsadai.model.ModelPackage#getDataType_ListEnd()
	 * @model containment="true"
	 *        extendedMetaData="kind='element' name='listEnd' namespace='##targetNamespace'"
	 * @generated
	 */
	ListEndType getListEnd();

	/**
	 * Sets the value of the '{@link gsoc.ogsadai.model.DataType#getListEnd <em>List End</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>List End</em>' containment reference.
	 * @see #getListEnd()
	 * @generated
	 */
	void setListEnd(ListEndType value);

} // DataType
